﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dominio;

namespace Persistencia
{
    public class BrBuzon : Broker
    {
        public override void Agregar(OPersistente o)
        {
            Buzon buzon = (Buzon)o;
            string sentencia = "INSERT INTO BUZON (OID, TIPO) VALUES (\'" + buzon.Oid + "\', \'" +
                buzon.Tipo + "\')";
            conexion.Ejecutar(sentencia);
        }

        public override void Modificar(OPersistente o)
        {
            //Pedido pe = (Pedido)o;
            //string sentencia = "UPDATE PEDIDO SET FECHA_ENTREGA =\'" + pe.FechaEntrega.ToString() + "\' , CLIENTE =" + "\'" + pe.Cliente.Oid +
            //    "\' , PRODUCTO=\'" + pe.Producto.Oid + "\', COMPLETADO=" + pe.Completado.ToString() + ", CANT_UNIDADES_PEDIDAS=" + pe.CantUnidadesPedidas.ToString() + ", FECHA_COMPLETADO=\'" + pe.FechaCompletado.ToString() + "\' WHERE OID = \'" + pe.Oid + "\'";
            //conexion.Ejecutar(sentencia);
        }

        public override void Eliminar(OPersistente o)
        {
            //Pedido pe = (Pedido)o;
            //string sentencia = "UPDATE PEDIDO SET BORRADO = True WHERE OID = \'" + pe.Oid + "\'";
            //conexion.Ejecutar(sentencia);
        }

        public override void TraerDatos(OPersistente o)
        {
            Buzon buzon = (Buzon)o;
            string sentencia = "";
            //string sentencia = "SELECT * FROM BUZON WHERE OID = \'" + buzon.Oid + "\'";
            //conexion.TraerDatos(sentencia);
            //conexion.SiguienteRegistro();
            //String tipoBuzon = conexion.ObtenerValor(1).ToString();
            //if (tipoBuzon.Equals(Buzon.Entrada))
            //{
            //    buzon = Buzon.CreateBuzonEntrada();
            //}
            //if (tipoBuzon.Equals(Buzon.Entrada))
            //{
            //    buzon = Buzon.CreateBuzonSalida();
            //}
            //buzon.Oid = conexion.ObtenerValor(0).ToString();
            //conexion.FinConsulta();

            //Recuperos carpetas del buzon
            sentencia = "SELECT * FROM CARPETA WHERE OIDBUZON = \'" + buzon.Oid + "\'";
            conexion.TraerDatos(sentencia);
            while (conexion.SiguienteRegistro())
            {
                Carpeta carpeta = new Carpeta();
                carpeta.Oid = conexion.ObtenerValor(0).ToString();
                Carpeta padre = new Carpeta();
                padre.Oid = conexion.ObtenerValor(1).ToString();
                carpeta.Padre = padre;
                carpeta.Nombre = conexion.ObtenerValor(2).ToString();
                buzon.ObjetosBuzon.Add(carpeta);
            }
            conexion.FinConsulta();

            //Recuperos mensajes del buzon
            sentencia = "SELECT * FROM MENSAJE WHERE OIDBUZON = \'" + buzon.Oid + "\'";
            conexion.TraerDatos(sentencia);
            while (conexion.SiguienteRegistro())
            {
                Mensaje mensaje = new Mensaje();
                mensaje.Oid = conexion.ObtenerValor(0).ToString();
                
                Carpeta padre = new Carpeta();
                padre.Oid = conexion.ObtenerValor(1).ToString();
                mensaje.CarpetaPadre = padre;
                
                mensaje.Asunto = conexion.ObtenerValor(2).ToString();
                mensaje.Contenido = conexion.ObtenerValor(3).ToString();
                mensaje.Leido = bool.Parse(conexion.ObtenerValor(4).ToString());
                
                buzon.ObjetosBuzon.Add(mensaje);
            }
            conexion.FinConsulta();
        }

        public override List<OPersistente> TraerLista(OPersistente o)
        {
            List<OPersistente> lista = new List<OPersistente>();
            Buzon buzon = (Buzon)o;
            string sentencia = "SELECT * FROM BUZON";
            conexion.TraerDatos(sentencia);
            while (conexion.SiguienteRegistro())
            {
                String tipoBuzon = conexion.ObtenerValor(1).ToString();
                if (tipoBuzon.Equals(Buzon.Entrada))
                {
                    buzon = Buzon.CreateBuzonEntrada();
                }
                if (tipoBuzon.Equals(Buzon.Entrada))
                {
                    buzon = Buzon.CreateBuzonSalida();
                }
                buzon.Oid = conexion.ObtenerValor(0).ToString();            
                lista.Add(buzon);
            }
            conexion.FinConsulta();
            return lista;
        }
    }
}
